#include <cstddef>
#include <string>
#include <vector>
#include <cstdlib>

#include "inicio.h"
#include "abertura.h"
#include "menu_inicial.h"
#include "pre_jogo.h"
#include "../view/titulo.h"

using namespace Controller;
using namespace View;
using namespace std;

/**
 * Construtores
 */
Inicio::Inicio()
{
  /**
   * Inicializa os atributos
   */
  this->_argc = 0;
}

Inicio::Inicio(int argc, char** argv)
{
  int i;

  /**
   * Checa a consistencia dos parametros
   */
  if(argc < 1 || argv == NULL)
  {
  }

  /**
   * Popula os atributos do objeto
   */
  this->_argc = argc;
  for(i = 0; i < argc; i++)
  {
    this->_argv.push_back(string(argv[i]));
  }
}

/**
 * Destruidor
 */
Inicio::~Inicio()
{
  /**
   * Sai do jogo
   */
  exit(0);
}

/**
 * Executa o inicio do jogo
 */
void Inicio::iniciar()
{
  /**
   * Executa a abertura do jogo
   */
  this->executarAbertura();

  /**
   * Executa o menu inicial do jogo
   */
  this->executarMenuInicial();
}

/**
 * Executa a tela de inicio do jogo
 */
void Inicio::executarAbertura()
{
  Abertura abertura = Abertura();

  abertura.iniciar();
}

/**
 * Executa o menu inicial do jogo
 */
void Inicio::executarMenuInicial()
{
  MenuInicial menuInicial = MenuInicial();

  menuInicial.iniciar();
}

/**
 * Executa a parametrizacao pre jogo
 */
void Inicio::executarPreJogo()
{
  PreJogo preJogo = PreJogo();

  preJogo.iniciar();
}

/**
 * Executa o jogo
 */
void Inicio::executarJogo()
{
}

/**
 * Executa a declaracao do vencedor
 */
void Inicio::executarVencedor()
{
}